﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace Home.Domain.Entities
{
    /// <summary>
    /// 分类
    /// </summary>
    public class Category
    {
        //public Category()
        //{
        //    ChildEntitis = new HashSet<Classification>(); 
        //}
        /// <summary>
        /// 分类Id
        /// </summary>
        [DisplayName("分类Id")]
        public int? Id { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        [DisplayName("分类名称")]
        [StringLength(50, ErrorMessage = "长度不能超过10个字符")]
        [Required(ErrorMessage = "名称不能为空")]
        public string Name { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        [DisplayName("创建时间")]
        public DateTime? CreateDate { get; set; }
        /// <summary>
        /// 分类顺序(同级)
        /// </summary>
       [DisplayName("分类顺序")]
        public int? Sort { get; set; }
        /// <summary>
        /// 状态（0下架，1上架，默认1）
        /// </summary>
        [DisplayName("上下架状态")]
        public int? State { get; set; }
        /// <summary>
        /// 父项Id，int?中的?声明表示该属性可为空值，与数据库表中的可空属性一致。
        /// </summary>
        [DisplayName("父项Id")]
        public int? ParentId { get; set; }
        /// <summary>
        /// 分类路径（父类Id用“,”隔开）
        /// </summary>
        [DisplayName("分类路径")]
        [StringLength(50, ErrorMessage = "长度不能超过10个字符")]
        public string Path { get; set; }
        /// <summary>
        /// 父实体对象，virtual表示延迟加载。
        /// </summary>
        public virtual Category ParentEntity { get; set; }
        /// <summary>
        /// 子实体对象集合，virtual表示延迟加载。 
        /// </summary>
        [ForeignKey("ParentId")] //指定子实体集合中的外键属性   
        public virtual ICollection<Category> ChildEntitis { get; set; }
        /// <summary>
        /// 分类品牌关系表
        /// </summary>
        public virtual ICollection<Category_Brand> Category_Brands { get; set; } 
       
    }
}
